/**
 * INI文件解析器
 * 用于解析服务器返回的INI格式配置文件
 */
class IniParser {
  /**
   * 解析INI文件内容
   * @param {string} content - INI文件内容
   * @returns {object} 解析后的对象
   */
  static parse(content) {
    const result = {};
    let currentSection = null;

    const lines = content.split('\n');
    
    for (let line of lines) {
      line = line.trim();
      
      // 跳过空行和注释
      if (!line || line.startsWith(';') || line.startsWith('#')) {
        continue;
      }

      // 匹配section [SectionName]
      const sectionMatch = line.match(/^\[([^\]]+)\]$/);
      if (sectionMatch) {
        currentSection = sectionMatch[1];
        result[currentSection] = {};
        continue;
      }

      // 匹配键值对 key=value
      const keyValueMatch = line.match(/^([^=]+)=(.*)$/);
      if (keyValueMatch && currentSection) {
        const key = keyValueMatch[1].trim();
        const value = keyValueMatch[2].trim();
        result[currentSection][key] = value;
      }
    }

    return result;
  }

  /**
   * 获取指定section的配置
   * @param {object} iniData - 解析后的INI数据
   * @param {string} section - section名称
   */
  static getSection(iniData, section) {
    return iniData[section] || null;
  }

  /**
   * 获取所有section名称
   * @param {object} iniData - 解析后的INI数据
   */
  static getSections(iniData) {
    return Object.keys(iniData);
  }

  /**
   * 获取section的键值对数量
   * @param {object} iniData - 解析后的INI数据
   * @param {string} section - section名称
   */
  static getSectionSize(iniData, section) {
    const sectionData = this.getSection(iniData, section);
    return sectionData ? Object.keys(sectionData).length : 0;
  }
}

module.exports = IniParser;

